1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect;
18
19 import static com.google.common.truth.Truth.assertThat;
20
21 import com.google.common.annotations.GwtCompatible;
22 import com.google.common.collect.ImmutableSet.Builder;
23 import com.google.common.testing.EqualsTester;
24
25 import java.util.Collection;
26 import java.util.Collections;
27 import java.util.Iterator;
28 import java.util.Set;
29
30
31
32
33
34
35
36
37 @GwtCompatible(emulated = true)
38 public class ImmutableSetTest extends AbstractImmutableSetTest {
39
40 @Override protected Set<String> of() {
41 return ImmutableSet.of();
42 }
43
44 @Override protected Set<String> of(String e) {
45 return ImmutableSet.of(e);
46 }
47
48 @Override protected Set<String> of(String e1, String e2) {
49 return ImmutableSet.of(e1, e2);
50 }
51
52 @Override protected Set<String> of(String e1, String e2, String e3) {
53 return ImmutableSet.of(e1, e2, e3);
54 }
55
56 @Override protected Set<String> of(
57 String e1, String e2, String e3, String e4) {
58 return ImmutableSet.of(e1, e2, e3, e4);
59 }
60
61 @Override protected Set<String> of(
62 String e1, String e2, String e3, String e4, String e5) {
63 return ImmutableSet.of(e1, e2, e3, e4, e5);
64 }
65
66 @Override protected Set<String> of(String e1, String e2, String e3,
67 String e4, String e5, String e6, String... rest) {
68 return ImmutableSet.of(e1, e2, e3, e4, e5, e6, rest);
69 }
70
71 @Override protected Set<String> copyOf(String[] elements) {
72 return ImmutableSet.copyOf(elements);
73 }
74
75 @Override protected Set<String> copyOf(Collection<String> elements) {
76 return ImmutableSet.copyOf(elements);
77 }
78
79 @Override protected Set<String> copyOf(Iterable<String> elements) {
80 return ImmutableSet.copyOf(elements);
81 }
82
83 @Override protected Set<String> copyOf(Iterator<String> elements) {
84 return ImmutableSet.copyOf(elements);
85 }
86
87 public void testCreation_allDuplicates() {
88 ImmutableSet<String> set = ImmutableSet.copyOf(Lists.newArrayList("a", "a"));
89 assertTrue(set instanceof SingletonImmutableSet);
90 assertEquals(Lists.newArrayList("a"), Lists.newArrayList(set));
91 }
92
93 public void testCreation_oneDuplicate() {
94
95 ImmutableSet<String> set = ImmutableSet.of(
96 "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "a");
97 assertEquals(Lists.newArrayList(
98 "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"),
99 Lists.newArrayList(set));
100 }
101
102 public void testCreation_manyDuplicates() {
103
104 ImmutableSet<String> set = ImmutableSet.of(
105 "a", "b", "c", "c", "c", "c", "b", "b", "a", "a", "c", "c", "c", "a");
106 assertThat(set).has().exactly("a", "b", "c").inOrder();
107 }
108
109 public void testCreation_arrayOfArray() {
110 String[] array = new String[] { "a" };
111 Set<String[]> set = ImmutableSet.<String[]>of(array);
112 assertEquals(Collections.singleton(array), set);
113 }
114
115 public void testCopyOf_copiesImmutableSortedSet() {
116 ImmutableSortedSet<String> sortedSet = ImmutableSortedSet.of("a");
117 ImmutableSet<String> copy = ImmutableSet.copyOf(sortedSet);
118 assertNotSame(sortedSet, copy);
119 }
120
121 @Override <E extends Comparable<E>> Builder<E> builder() {
122 return ImmutableSet.builder();
123 }
124
125 @Override int getComplexBuilderSetLastElement() {
126 return LAST_COLOR_ADDED;
127 }
128
129 public void testEquals() {
130 new EqualsTester()
131 .addEqualityGroup(ImmutableSet.of(), ImmutableSet.of())
132 .addEqualityGroup(ImmutableSet.of(1), ImmutableSet.of(1), ImmutableSet.of(1, 1))
133 .addEqualityGroup(ImmutableSet.of(1, 2, 1), ImmutableSet.of(2, 1, 1))
134 .testEquals();
135 }
136 }
137